package org.jing.core.lang.annotation;

import org.jing.core.lang.data.DefaultSerializableFactory;
import org.jing.core.lang.itf.JSerializableFactory;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Description: 注解用于可序列化的类的属性. <br>
 *
 * @author bks <br>
 * @since 2023-09-18 <br>
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD })
public @interface SerializableField {
    /** 路径, 默认为空 */
    String value() default "";

    /** 必填限制 */
    boolean required() default false;

    Class<?> defaultValueType() default Void.class;

    /** 默认值 */
    String defaultValue() default "";

    /** 备注 */
    @SuppressWarnings("unused")
    String remark() default "";

    /** 转换器 */
    Class<? extends JSerializableFactory> factory() default DefaultSerializableFactory.class;

    /* 转换器入参 */
    String[] factoryArgs() default {};
}
